
#include "iostream"
using namespace std;

int func(int x) // 
{
	cout << "int func(int x) " << endl;
	return x;
}

int func(int a, int b)
{
	cout << "int func(int a, int b)" << endl;
	return a + b;
}

int func(const char* s)
{
	cout << "int func(const char* s)" << endl;
	return strlen(s);
}



 //定义一个类型，，函数类型。。

typedef int(*PFUNC)(int a); 

typedef int(*PFUNC2)(const char *p); 

int main(int argc, char *argv[])
{

	//func是一个函数名，函数名就代表函数的入口地址，函数名就是函数指针变量

	PFUNC p = func;
	p(1);

	PFUNC2 myp2 = func;
	myp2("abc");



	return 0;
}


/*
补充

	//定义一个数组类型
	typedef int MYTYPEAarry[10];
	MYTYPEAarry a1; //int a[10];

	//定义一个数组类型指针类型
	typedef int (*MYArrayP)[10]; 

	MYArrayP myarray = NULL;
	//myarray = &a1;
	//定义一个数组类型指针类型变量
	int (*myP)[10]; //告诉编译器给我分配4个字节的内存。。。我要做一个指针变量 这个变量指向一个数组。。
*/
